package game.controller;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Collection;

import game.interfaces.PlayerInterface;
import game.view.View;

/**
 * Oberste Controller Instanz. Steuert das starten des Spiels sowie die
 * grundlegenden Spielabläufe als auch das Beenden des Spiels.
 * 
 * @author motte
 * 
 */
public class GameController implements Runnable, KeyListener{
	
	private Collection<PlayerInterface> player;
	private View view;
	
	public static void main(String[] args) {
		
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		
		// Zeit messen
		
		gameUpdate();
		
		//render()
		
		// Zeid dif berrechnen
		
		// wenn zeitdiff < gewünschtes fps intervall
			//sleep fpsintervall-zeitdif
		// enn nicht
			// 
		
	}

	/**
	 * Initialize all the game objects, run only once.
	 */
	public void gameInit(){
		// TODO: Initialisieren des Spiels. Z.B.: Registrieren der Spieler usw.
	}
	
	/**
	 * One step of the game. Update all game values.
	 */
	public void gameUpdate(){
		// TODO: Updaten aller Spielwerte
	}
	
	/**
	 *  Shutdown the game, clean up code that runs only once.
	 */
	public void gameShutdown() {
		// TODO: Beenden des Spiels
	}
	
	public void registerPlayer(PlayerInterface player){
		// Player der observerliste hinzufügen
	}
	
	public void unRegisterPlayer(PlayerInterface player){
		// Player aus der observerliste entfernen
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	
}
